// 1. 递归结束条件不合理
// #include <stdio.h>

// // 定义一个函数residue()，计算吃n天后桃子剩余个数
// // 从0开始无限调用residue(),直到满足返回值为1

// int residue(int total, int days, int count){
//     if (total / 2 - 1 < 0 || count > days) return -1;
//     count ++;
//     return residue(total / 2 - 1, days, count);
// }

// int main(){
//     int days = 9;

//     for(int i = 1;;i++){
//         int count = 0;
//         if(count == 9 && residue(i, days, count) == 1){
//             printf("最初有%d个桃子\n", i);
//             break;
//         }
//     }

//     return 0;
// }


// 2. 接上题思路，改进递归结束条件

#include <stdio.h>
#include "residue.h"

int main(){
    int days = 9;
    for(int i = 1; ; i++){
        // 这里直接用 residue(i, days) 计算 i 个桃子经过 9 天剩多少
        // 如果返回值等于 1 就说明符合题意
        if(residue(i, days) == 1){
            printf("最初有 %d 个桃子\n", i);
            break;
        }
    }
    return 0;
}



// 3. 另一种思路

// #include <stdio.h>

// int peach(int day){
//     if(day == 10){
//         return 1;
//     }
//     else{
//         return (peach(day+1)+1)*2;
//     }
// }

// int main(){
//     printf("第十天桃子数量：%d\n", peach(10));
//     printf("第三天桃子数量：%d\n", peach(3));
//     printf("第一天桃子数量：%d\n", peach(1));


//     return 0;
// }